        //
//  JMainTabBarVC.swift
//  JMicroBlog
//
//  Created by Jason on 18/5/15.
//  Copyright (c) 2015 Shepherd. All rights reserved.
//

import UIKit

class JMainTabBarVC: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        setTabBar()  // 设置控制器的tabBar
    }
    
    // MARK: - TabBar视图加载
    
    /**
     设置控制器的tabbar包括:加载tabBar的所有子控制器,设置tabBar的样式
    
    */
    
    private func setTabBar() {
        // .storyboard字典(sbName : navTitle)
        let sbArrs = ["JHome":"首页","JMessage":"消息","JDiscover":"发现","JProfile":"我"]
        
        // Swift 是64架构,所以在iphone5运行不正常 字典遍历乱序了
        // 遍历字典 加载控制器 
        for (k,v) in sbArrs {
            addChildViewController(k, v)
        }
        
        // 设置tabBar的文字颜色
        tabBar.tintColor = UIColor.orangeColor()
        
        // 设置tabBar的背景图片
        tabBar.backgroundImage = UIImage(named: "tabbar_background")
        
        // 设置composedBtn的按钮单击事件
        (tabBar as! JMainTabBar).composedBtn.addTarget(self, action: "clickComposedBtn", forControlEvents:UIControlEvents.TouchUpInside)
    }
    
    /**  撰写按钮的单击事件 */
    func clickComposedBtn() {
        presentViewController(UIStoryboard.initialViewController("JComposeVC"), animated: true, completion: nil)
    }
    
    /**
    加载TabBar底部的子控制器 重载系统的addChildViewController 在这个场景中两个函数想要实现的效果是一致的,只是需要的参数不同,所以采用重载的实现方式
    
    :param: sbName   storybaord文件名
    :param: navTitle storyboard中的导航控制器的根视图的导航栏标题
    */
    private func addChildViewController(sbName:String,_ navTitle:String) {
        
        // 根据storyboard初始化根控制器
        let initVC = UIStoryboard.initialViewController(sbName) as! UINavigationController
        
        // 设置栈顶控制器的标题 会级联设置
        initVC.topViewController.title = navTitle
        
        // 设置图片  参考:tabbar_Jdiscover
        initVC.tabBarItem.image = UIImage(named:"tabbar_\(sbName)")
        initVC.tabBarItem.selectedImage = UIImage(named: "tabbar_\(sbName)_highlighted")
        
        // 添加子控制器
        addChildViewController(initVC)
    }
}
